home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy001 / graph / graph20.arj / UTIL / SPRITER / SPRVIS.ASM < prev    next >
Encoding:
Assembly Source File  |  1996-07-13  |  4.7 KB  |  148 lines

  1. ;;;;;;;  Visualizador de sprites.     NAVI Dj.
  2. .MODEL SMALL
  3. .STACK
  4. .386
  5.  
  6. .DATA
  7. SPRName         DB  13 DUP (0)          ;  Nombre del fichero con el sprite.
  8. SizeX           DW      0
  9. SizeY           DW      0               ;  Tamaño del sprite
  10. MsgError        DB  'ERROR. Sintaxis correcta:',0Dh,0Ah
  11.                 DB  '       SPRVIS  /Snombre_sprite /Xtamaño_x /Ytamaño_y',0Dh,0Dh,0Ah
  12.                 DB  ' Los tamaños se deben especificar con 3 dígitos obligatoriamente.$'
  13.  
  14. .CODE
  15. INCLUDE GRFLIB.INC
  16.  
  17. LineaCmds       PROC
  18.                 MOV     DI, 80h         ;  Apunta a la línea de comandos.
  19.                 XOR     CH, CH
  20.                 MOV     CL, ES:[DI]     ;  Cogemos la longitud.
  21.                 INC     DI
  22.  
  23.         @@BuscaCaracter:
  24.                 MOV     AL, ES:[DI]
  25.                 INC     DI
  26.                 CMP     AL, '/'
  27.                 JNE   @@BuscaCaracter
  28.                 CMP     DI, 0FFh
  29.                 JA    @@Final
  30.         @@Comando:
  31.                 MOV     AL, ES:[DI]
  32.                 INC     DI
  33.                 CMP     AL, 'S'
  34.                 JE    @@SPRName
  35.                 CMP     AL, 'X'
  36.                 JE    @@SizeX
  37.                 CMP     AL, 'Y'
  38.                 JNE   @@BuscaCaracter
  39.           @@SizeY:
  40.                 XOR     DX, DX
  41.                 MOV     AL, ES:[DI]
  42.                 INC     DI
  43.                 SUB     AL, 30h
  44.                 MOV     AH, 100
  45.                 MUL     AH
  46.                 ADD     DX, AX
  47.                 MOV     AL, ES:[DI]
  48.                 INC     DI
  49.                 SUB     AL, 30h
  50.                 MOV     AH, 10
  51.                 MUL     AH
  52.                 ADD     DX, AX
  53.                 MOV     AL, ES:[DI]
  54.                 INC     DI
  55.                 SUB     AL, 30h
  56.                 ADD     DX, AX
  57.                 MOV     [SizeY], DX
  58.                 JMP   @@BuscaCaracter
  59.           @@SizeX:
  60.                 XOR     DX, DX
  61.                 MOV     AL, ES:[DI]
  62.                 INC     DI
  63.                 SUB     AL, 30h
  64.                 MOV     AH, 100
  65.                 MUL     AH
  66.                 ADD     DX, AX
  67.                 MOV     AL, ES:[DI]
  68.                 INC     DI
  69.                 SUB     AL, 30h
  70.                 MOV     AH, 10
  71.                 MUL     AH
  72.                 ADD     DX, AX
  73.                 MOV     AL, ES:[DI]
  74.                 INC     DI
  75.                 SUB     AL, 30h
  76.                 ADD     DX, AX
  77.                 MOV     [SizeX], DX
  78.                 JMP   @@BuscaCaracter
  79.           @@SPRName:
  80.                 MOV     SI, Offset SPRName
  81.               @@BucleSPR:
  82.                 MOV     AL, ES:[DI]
  83.                 INC     DI
  84.                 CMP     AL, ' '
  85.                 JE    @@FinSPR
  86.                 PUSH    DI
  87.                 SUB     DI, CX
  88.                 SUB     DI, 2
  89.                 CMP     DI, 80h
  90.                 POP     DI
  91.                 JNB   @@FinSPR
  92.                 MOV     DS:[SI], AL
  93.                 INC     SI
  94.                 JMP   @@BucleSPR
  95.               @@FinSPR:
  96.                 MOV     BYTE PTR DS:[SI], 0
  97.                 JMP   @@BuscaCaracter
  98.         @@Final:RET
  99. LineaCmds       ENDP
  100.  
  101. Visualizador    PROC
  102.                 MOV     AX, @DATA
  103.                 MOV     DS, AX
  104.                 CALL    LiberaMEM
  105.                 CALL    ModoGrafico     ;  Encendemos GRAPH.
  106.                 CALL    TrataError
  107.  
  108.                 CALL    LineaCmds
  109.                 MOV     DX, Offset SPRName
  110.                 MOV     BX, [SizeX]
  111.                 MOV     CX, [SizeY]
  112.                 CALL    CargaSprite     ;  Cargamos el sprite.
  113.                 PUSH    DS
  114.                 CALL    TrataError
  115.                 POP     DS
  116.                 CMP     AL, 0FFh
  117.                 JE    @@Error
  118.                 PUSH    AX
  119.                 MOV     AH, AL
  120.                 XOR     AL, AL
  121.                 XOR     BP, BP
  122.                 XOR     BX, BX
  123.                 CALL    DibujaSprite    ;  Dibujamos el sprite.
  124.                 CALL    TrataError
  125.                 POP     AX
  126.                 CALL    DestSprite
  127.  
  128.         @@Espera:
  129.                 IN      AL, 60h
  130.                 CMP     AL, 81h
  131.                 JNE   @@Espera          ;  Espera que se pulse ESC.
  132.  
  133.                 XOR     DX, DX
  134.                 MOV     CX, 8000h
  135.                 CALL    FadeDown        ;  Hace un fade.
  136.                 CALL    ModoTexto
  137.                 MOV     AX, 4C00h
  138.                 INT     21h             ;  Salir al DOS.
  139.  
  140.         @@Error:CALL    ModoTexto
  141.                 MOV     AH, 9
  142.                 MOV     DX, Offset MsgError
  143.                 INT     21h
  144.                 MOV     AX, 4C01h
  145.                 INT     21h
  146. Visualizador    ENDP
  147.                 END     Visualizador
  148.